﻿using System;
using EntitiesTM;
using Business;
using System.Net.Mail;
using System.Net;
using System.Web.UI;

namespace TimeWork
{
    public partial class LostPassword : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        public string createLostPassword(int PasswordLength)
        {
            string _allowedChars = "abcdefghijk0123456789mnopqrstuvwxyz";
            Random randNum = new Random();
            char[] chars = new char[PasswordLength];
            int allowedCharCount = _allowedChars.Length;

            for (int i = 0; i < PasswordLength; i++)
            {
                chars[i] = _allowedChars[(int)((_allowedChars.Length) * randNum.NextDouble())];
            }
            return new string(chars);
        }

        protected void BtnSend_Click(object sender, EventArgs e)
        {
            lblError.Text = String.Empty;
            string email = TxtEmail.Text.Trim();
            // Kiem tra email ton tai
            int[] result = BuStaff.checkEmail(email);
            if (result[0] == 0)
            {
                // Tao mat khau ngau nhien
                string pass = createLostPassword(7);
                // Cap nhat mat khau
                EnStaff staff = new EnStaff();
                staff.staffEmail = email;
                staff.staffPassword = pass;

                BuStaff.updLostPassword(staff,result[1].ToString());
                // Gui email thong bao
                if (sendMail_UseGmail("iss.gov.vn@gmail.com", "QwEr!2#4", email, "Hệ thống ghi chép thời gian - Reset mật khẩu", emailBody(staff, result[1].ToString())))
                {
                    ScriptManager.RegisterStartupScript(this, this.GetType(), "redirectMe", "alert('Mật khẩu đã được gửi tới Email của bạn!');location.href='Login.aspx';", true);        
                }
                else
                {
                    ScriptManager.RegisterStartupScript(this, this.GetType(), "redirectMe", "alert('Đã có lỗi xảy ra, hãy thử lại!');", true);        
                }

            }
            else
            {
                lblError.Text = "Email này chưa được đăng ký với hệ thống<br>";
            }
        }

        private string emailBody(EnStaff staff, string companyid)
        {
            string name = BuStaff.GetStaffByEmailOpt(staff.staffEmail, companyid).staffName;
            string body = String.Empty;
            body+="Xin chào <b>"+name+"</b>!<br><br>";
            body += "Đây là Email gửi đến từ website <a href='http://iss.gov.vn'>Hệ thống ghi chép thời gian</a><br>" ;
            body += "Thông tin đăng nhập của bạn như sau:<br>";
            body += "   Email: "+staff.staffEmail+"<br>";
            body += "   Mật khẩu: <b>" + staff.staffPassword+ "</b><br><br>";
            body += "<a href='http://iss.gov.vn/Login.aspx'>Đăng nhập</a><br>";
            body += "<br>Sau khi đăng nhập bạn nên đổi lại mật khẩu để tiện cho việc đăng nhập lần tiếp theo";
            body += "<br><br><hr>Vui lòng không trả lời Email này!";
            return body;
        }

        public bool sendMail_UseGmail(string strFrom, string strPass, string strTo, string strSubject, string strBody)
        {
            MailMessage ms = new MailMessage(strFrom, strTo, strSubject, strBody);

            ms.BodyEncoding = System.Text.Encoding.UTF8;
            ms.SubjectEncoding = System.Text.Encoding.UTF8;
            ms.IsBodyHtml = true;

            ms.ReplyToList.Add(new MailAddress(strFrom));
            ms.Sender = new MailAddress(strFrom);

            SmtpClient SmtpMail = new SmtpClient("smtp.gmail.com", 587);
            SmtpMail.Credentials = new NetworkCredential(strFrom, strPass);
            SmtpMail.EnableSsl = true;

            try
            {
                SmtpMail.Send(ms);
                return true;
            }
            catch
            {
                return false;
            }
        }
        
    }
}